﻿using System;
using System.IO;
using System.Text;

namespace DeviceController.Wpf.SaveInfoServices
{
    public static class JsonFile
    {
        /// <summary>
        /// 打开一个 Json 文件文件流，如果文件不存在，则创建该文件。
        /// </summary>
        public static Stream OpenStream(string fileName)
        {
            // 开始租聘。
            // 文件流必须是线程安全。
            var fileInfo = new FileInfo(fileName);
            Stream? stream;

            if (!fileInfo.Exists)
            {
                if (fileInfo.Directory  == null)
                {
                    throw new ArgumentException("文件名目录不存在，可能是文件名格斯不正确。");
                }

                if (!fileInfo.Directory.Exists)
                {
                    fileInfo.Directory.Create();
                }

                stream = fileInfo.Create();
                stream.Write(Encoding.UTF8.GetBytes("{\n}"));
                stream.Flush();
                // 刷新之后指针会偏移，所以重新设定指针。
                stream.Position = 0;
            }
            else
            {
                stream = fileInfo.Open(FileMode.Open);
            }

            return stream;
        }
    }
}
